home *** CD-ROM | disk | FTP | other *** search
- Program: Cache Test Copyright 1993 All Rights Reserved
- Version: 5.0 a
- Author: George Spafford
- Date: June 18, 1993
-
- PURPOSE:
-
- To allow users to objectively test the effectiveness of their disk caching
- software. Cache Test is an independent product and is not supported by
- any manufacturer.
-
- GROUNDWORK:
-
- Cache Test tests drive performance by writing data to a specified, or the
- default, drive. Sequential tests are performed by writing randomly generated
- fixed length strings to a DOS Text file. Each record consists of n number of
- identical characters plus a carriage return (ASCII 13) and line feed (ASCII 10).
- By default, the program writes 513 byte records. This translates to 511 bytes
- in the record plus the CR and LF. If we were to imagine 8 character records,
- and that ^ is a CR and + is a LF then the data looks like this.
-
- aaaaaaaa^+
- 33333333^+
- --------^+
- zzzzzzzz^+
-
- The characters that make up the record are randomly generated. The random
- routine is seeded by the timer tick every time it is called to increase the
- random selections. Characters range from ASCII 32 to ASCII 252.
-
- Random records are written to the disk using a random access file structure.
- Each record consists of randomly generated bytes and two record separator
- characters. As with the sequential file structure, the number of characters
- written to the disk is the specified record size - 2 + 2 record separators.
- It is very similar to the sequential except that it allows random movement
- through the file.
-
- You can view any off these files by pushing CONTROL-BREAK during their creation
- and then use your favorite disk editor or file viewer.
-
- The "DIR Test" consists of Cache Test reading the root directories of either
- the specified or default drive and then reading the files in those directories.
- It will repeat this process until it reaches the required number of reads.
- The more directories you have in your root the better. To be specific,
- it reads the tree and then counts the number of files in each directory.
- The value you see it totaling is the number of files + the number of directories
- + 1 root directory. However, it will keep incrementing by looping the test
- until the desired number of reads has taken place. Now, let's say that you
- run the default 10,000 record (count) test. Let's also say that you have a
- drive witth 2,500 files and directories - the program will need to loop through
- the drive 4 times in order to meet its test requirements. If you limit the
- number of records to 2,500 by using the command switch /N:2500 then it will
- only need to read the tree once.
-
- Usage:
-
- CT [switches]
-
- MAKE SURE YOU HAVE SPACES BETWEEN THE SWITCHES - IF YOU DO NOT, CT
- WILL NOT BE ABLE TO INTERPRET THE SWITCHES CORRECTLY.
-
- /A Performs all tests [this is the default if just CT
- is run].
- /C Specifies that the /L: log file is to be created and
- not simply appended to.
- /D Perform DOS directory services test.
- /D:d Drive to test. "d" is the drive letter.
- /L:logto Specifies the file name or device to log to.
- "logto" is the name. By default, data is appended to
- this. /C must be specified if you want to create a
- new file and NOT append.
- /N:nnnn Specifies how many records to write. "nnnn" is the
- number. 10,000 is the default.
- If you are processing a directory test, this is how
- many directory entry reads that CT will perform.
- /P:pppp Specifies the number of test passes. "pppp" is the
- number. 1 is the default.
- /R Perform random access tests.
- /S Perform sequential tests.
- /S:sss Specifies the individual record sizes. "sss" is the
- record size. The default is 513 bytes. Specify the
- total size that you want a record to be.
- THE MAXIMUM VALUE FOR THIS IS 16,384. IF YOU GET A
- STRING SPACE ERROR, YOU WILL NEED TO MAKE THIS VALUE
- SMALLER THAN WHAT YOU SET IT AT. A small hint is
- to set your sizes = to a factor of your sector size
- + 1 byte. My sectors are 512, as are most peoples, and
- then add 1 = the 513 byte default record size.
- /W Pause after each screen.
- /X Exclude screen writes during the testing phase to
- remove the video bottlenecks.
-
- Use /A to run all tests. /D /R /S specify individual tests.
-
- Examples:
-
- CT /N:1000 /P:5 /W 1000 record test, 5 passes, wait after each
- screen completes.
-
- CT /N:5000 /S:1025 5000 record test, 1025 byte records.
-
- CT /N:5000 /W /R /D 5000 record test, wait after each screen,
- perform only the random and directory tests.
-
- CT /L:PRN Perform the default test one time and log it
- the printer.
-
-
- THE DISPLAY:
-
- Please note that the total time values will not add up to the displayed
- individual test times. This is because I have used double-precision floating
- point variables to hold my timer values. While you see only two decimal
- places on the screen, there are a bunch that you do not see. The total values
- are the result of the summation of the individual test scores, the totals are
- not timed results - they are mathematical results subject to errors in rounding.
-
- Also, the averages column is calculated by adding the floating point numbers
- together and then dividing by the current pass number - NOT the total number
- of passes.
-
- STOPPING THE PROGRAM:
-
- CONTROL-BREAK will terminate the program execution safely. Note, you will
- probably leave a file named ##TEST##.CT in the root directory of the drive
- that you were testing. You will need to delete that by hand OR CT will delete
- it the next time it is run.
-
- HISTORY:
-
- v5.0a 06/18/93
-
- The directory test bombed on drives with over 250 directories
- on them. The program will now process 500 entries before looping.
- This means that if you have 1000 directories, the program will
- only actually use 500 of them to perform its tests.
-
- Also, the program checked for disk space before it performed the
- directory tests - this is not necessary and now space is only
- checked before the sequential and random tests are performed.
-
- v5.0 06/08/93
-
- Can you say "Major Revision?" This version was rebuilt from the
- ground up and shares very little with previous versions.
- Some of the modifications in this program are a direct result from
- input by Herb Chong. If it wasn't for Herb's input, the DIR test
- wouldn't be here and test data wouldn't be randomly generated.
- Thank you very much Herb.
-
- A lot of the command line switches have changed. You may need
- to invoke CT with the /? to see the new ones.
-
- Things that are new:
- - Changed switches
- - Changed tests
- - Changed reporting
- - Changed compiler
- - Changed my office!
-
- v4.3c 07/09/92 pm
-
- Heck ... I can't win for losing. I have spent several hours now
- debugging the variable overflow problem. I believe that they
- have all been eliminated now.
-
- To say "sorry," you can have VT 1.1 also if you choose to register
- (or are already registered to) Cache Test - this just applies to
- people registering 4.3 or who are already registered now.
-
-
- v4.3b 07/09/92 am
-
- Ooops, I switched to explicit variable typing and ran
- into a problem when file sizes exceeded the limit of an
- integer variable (32,767) and the program bombed. It's all
- set now.
-
- v4.3 07/06/92
-
- All screens can now be logged to a file or device. This
- logging no longer requires that the pass count (/P:) be
- greater than 1.
- Every second data screen (excluding the final summary) has
- a form feed added to it to prevent printing across paper
- perforations when logging to a printer.
- The summary screen now displays the command line that was used.
-
- ** Due to the volume of mail that I am receiving, I am forced to
- stop responding to every piece of mail unless you have questions.
- I'm really sorry for that one folks, but it is seriously taking
- time away from me when I could otherwise be coding.
-
- V4.2 01/10/92
-
- Using the /L: switch, a user can now specify where he/she
- would like the summary screen to go (nice idea Jim).
- Also did a little house cleaning on the program in general.
- Happy New Year everyone. I would like to thank three people
- especially for all of their tolerance and helpful suggestions:
- Tim Aright of Queued Access, Wayne Keeter of Wayne's World,
- and Jonathan Fisk.
-
- V4.1 11/13/91
-
- Well Owen, I thought about it. The screen counters can
- now be disabled using the /X switch on the command line.
- Note, there are many variables that affect cache performance.
- It was never my intention to test cache performance across
- machines. BUT, it is a good idea to allow the user the
- ability to decide for his/her self as to whether they want
- to or not. If you disable the counters, there can be some
- long pauses - especially for the Random Read/Write test - so
- be patient. CT now has the extremes - a lot of counters or
- none at all ;-)
-
- V4.0 10/29/91
-
- Whew... This one has quite a few updates:
-
- 1. COLOR (makes things a lot easier to read).
- 2. Tracking of timer ticks has been tightened down.
- 3. Created the ability to perform a number of tests
- and then present a summary screen with averages
- using the /P:ppp switch.
- 4. /W switch added for pausing after screens.
-
-
- V3.5 9/03/91
-
- In response to Mike Focke's request for counters in the
- crescendo and butterfly tests, I have again enabled them.
- And Mike, thanks for the suggestions ;-)
-
- V3.1 8/26/91
-
- The timing routine is now based on the presence of 18.2
- clock ticks per one second. The 100ths decimal location is
- still weak, but improved.
-
- V3.0 7/10/91
-
- Well, I accessed the BIOS segment for clock ticks to create
- the decimal level counters. The second decimal place is
- weak in terms of its accuracy, but I decided to leave it in.
- For those of you worried about significant digits, the
- algorithm used for this uses 18 clock ticks to generate one
- second of time.
-
- The test records are now 32 bytes total.
-
- Output screen formatting is improved.
-
- If the program is invoked without any parameters, it executes
- on the active drive with a 10,000 record test made up of 32
- bytes. All user input now occurs on the command line through
- the use of switches.
-
- V2.6 5/24/91
-
- I honestly did not intend another update so soon. It was
- pointed out to me that the file structure that I had been
- using was variable. As such, it made ratio comparisons
- somewhat difficult. Now, the default fixed record length
- is 32 bytes (the test record count is still 10,000). The
- user can specify the record length by using the /F:bbbbb
- switch. "bbbbb" must be between 0 and 32,765. Since the
- values are now fixed, a user can do a little math (remember
- that subject folks??) and discern the records per second and
- so forth. Do note, that two bytes are added to the test string
- in the files (CR/LF to be exact) that is why the maximum byte
- size that a user can specify is 32,765 and not the 32,767 legal
- default limit.
-
- V2.5 5/22/91
-
- 1. An actual test file byte size field has been added.
- This should allow users to track the actual sizes of
- the test records being written.
- 2. Some users suggested that truly random reads and writes
- should be added. This serves to get away from any form
- of sequentialized data.
- 3. Again, more cosmetic touchups.
-
- V2.0 5/16/91
-
- Due to some users having limited drive space, switches
- were added to allow for different size tests to
- occur. I was somewhat hesitant to do this because it
- negated the ability to call results "standard," but
- what really is standard?
-
- Switches were also added to allow users to select
- what tests they want to run. For now, all that can
- be specified is whether or not to run all tests,
- sequential tests only, or random tests only.
-
- The ButterFly test was also added in an attempt to
- give look-ahead caches a hard time. Some of the
- caches that use a FIFO method of purging will have a
- heck of a time with this one.
-
- Added timers/cleared up timers for the sequential and
- overall tests. Also speaking of timers, to avoid
- slowing down some routines, I have removed some of
- the video effects that were for the user's benefit
- only.
-
- Special thanks to Jonathan Fisk for all of his
- suggestions and debugging efforts.
-
- Special thanks also go out to Tim Akright, the sysop
- of Queued Access for all of his support.
-
-
- V1.0 5/10/91
-
- Well, I released it. That pretty well sums it up.
-
-
- I hope this program helps you evaluate some of your problems
- or even makes some solutions/benefits clear. This program is
- released as shareware. Its price is $10 for each concurrently
- used copy.
-
- Sincerely,
-
- George Spafford
- 3003 LakeShore Drive, #216
- St. Joseph, MI 49085
-
- I can be reached via a modem on EXEC-PC or CHANNEL-ONE BBS.
- My local BBS is Michigan Online 19200-8-N-1 (616) 429-3414
- Sysop: Zeke Torres.
-
- Code CopyRight: 1993 - George Spafford All Rights Reserved.
-
- CACHE TEST IS DISTRIBUTED AS IS. THE AUTHOR (GEORGE SPAFFORD) MAKES NO
- WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
- TO WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE,
- WITH RESPECT TO THIS SOFTWARE AND DOCUMENTATION. IN NO EVENT SHALL
- THE AUTHOR BE LIABLE FOR ANY DAMAGES, INCLUDING LOST PROFITS, LOST
- SAVINGS, OR ANY OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
- OUT OF THE USE OF OR THE INABILITY TO USE THIS PROGRAM.
-